import type { RouteRecordRaw } from 'vue-router'

/**
 * 路由元信息类型定义
 */
export interface RouteMeta {
	/**
	 * 路由标题/菜单标题/面包屑展示标题
	 */
	title: string
	/**
	 * 访问权限类型
	 * @ - 需要认证
	 * ? - 游客访问
	 * * - 所有用户
	 */
	authType?: '@' | '?' | '*'
	/**
	 * 是否在菜单中显示
	 */
	isMenu?: boolean
	/**
	 * 权限标识
	 */
	permission?: string
	/**
	 * 是否显示底部工具栏
	 */
	hasFooterToolbar?: boolean
	/**
	 * 其他自定义元信息字段
	 */
	[key: string]: any
}

/**
 * 扩展的路由配置类型定义，兼容 Vue Router 的 RouteRecordRaw
 */
export type AppRouteRecordRaw = Omit<RouteRecordRaw, 'meta' | 'children'> & {
	meta?: RouteMeta
	showSubMenu?: boolean
	children?: AppRouteRecordRaw[]
}
